Documentation Index Fetch the complete documentation index at: https://docs.privy.io/llms.txt
Use this file to discover all available pages before exploring further.
Start building with Privy. Everything you need to integrate Privy wallets into your app.
From first API call to production.
What do you want to build? Rest API
NodeJS
Go
Python
React
Swift
Android
Unity
curl --request POST \
--url https://api.privy.io/v1/wallets \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '{
"chain_type": "ethereum"
}'
import { PrivyClient } from '@privy-io/node' ;
const privy = new PrivyClient ({ appId , appSecret });
// Create wallet
const wallet = await privy . wallets (). create ({ chain_type: 'ethereum' });
// Send transaction
await privy
. wallets ()
. ethereum ()
. sendTransaction ( wallet . id , {
caip2: 'eip155:11155111' ,
params: { transaction: { to: 'recipient' , value: '0x1' }}
});
client := privy . NewPrivyClient ( privy . PrivyClientOptions {
AppID : "your-privy-app-id" ,
AppSecret : "your-app-secret" ,
})
ctx := context . Background ()
wallet , err := client . Wallets . New ( ctx , privy . WalletNewParams {
ChainType : privy . WalletChainTypeEthereum ,
})
from privy import PrivyClient
client = PrivyClient( app_id = app_id, app_secret = app_secret)
# Create wallet
wallet = client.wallets.create( chain_type = "ethereum" )
# Send transaction
tx = client.wallets.rpc(
wallet_id = wallet.id,
method = "eth_sendTransaction" ,
caip2 = "eip155:11155111" ,
params = { "transaction" : { "to" : "recipient" , "value" : "0x1" }},
)
import { usePrivy , useSendTransaction } from '@privy-io/react-auth' ;
export default function App () {
const { ready , authenticated , login } = usePrivy ();
const { sendTransaction } = useSendTransaction ();
if ( ! ready ) return < div > Loading... </ div > ;
// Log in
if ( ! authenticated ) return < button onClick = { login } > Log in </ button > ;
// Send transaction
return < button onClick = { () => sendTransaction ({ to: 'recipient' , value: 100000 }) } > Send </ button > ;
}
try await privy. sms . sendCode ( to : "+14155552671" )
let privyUser = try await privy. sms . loginWithCode (
"123456" ,
sentTo : "+14155552671"
)
let linkedAccounts = privyUser. linkedAccounts
privy.sms. sendCode (phoneNumber = "+14155552671" )
val result = privy.sms. loginWithCode (
code = "123456" ,
phoneNumber = "+14155552671"
)
val privyUser = result. getOrNull ()
await PrivyManager . Instance . Email
. SendCode ( "[email protected] " );
await PrivyManager . Instance . Email
. LoginWithCode ( "[email protected] " , "123456" );
IPrivyUser privyUser =
await PrivyManager . Instance . GetUser ();
Platform
Configure asset controls for you or your users Start with the approach that fits your app and architecture.
Secure assets for for your business Use Privy’s REST API to create and manage wallets across chains from your backend. Define
granular policies, control ownership of onchain resources, and integrate from any secure server
environment. Backend SDKs provide a streamlined way to access the full API surface.
Provision wallets for users Use Privy’s frontend SDKs to authenticate users, manage accounts, and create wallets directly
in your app. Built-in components and hooks handle login, sessions, and embedded wallets out
of the box. Extend with backend logic or API access as needed.
Products
Explore features Browse wallets, user management, and onchain capabilities.